Cross-compilation fixes (x86/64 on i386).
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Sun, 26 Feb 2006 09:42:07 +0000 (10:42 +0100)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Sun, 26 Feb 2006 09:42:07 +0000 (10:42 +0100)
Use strtoull to parse the final_exec_addr value from the command
line. Whe cross compiling on i386 for x86-64 unsigned long is 32 bit,
which leads to final_exec_addr being truncated to 32 bits by strtoul,
which leads to grub refusing to load the resulting image. Please
apply.

Use the target nm(1) when cross compiling to pick the _end address
from the Xen binary.

Signed-Off-By: Muli Ben-Yehuda <mulix@mulix.org>
xen/arch/x86/Makefile
xen/arch/x86/boot/mkelf32.c

index 854427293b0fb7e1bfd2f181f1ef89530cf4b9b7..8e932835883a5c7a220e5f3f637424b086ca02ad 100644 (file)
@@ -44,7 +44,7 @@ default: $(TARGET)
 
 $(TARGET): $(TARGET)-syms boot/mkelf32
        ./boot/mkelf32 $(TARGET)-syms $(TARGET) 0x100000 \
-       `nm $(TARGET)-syms | sort | tail -n 1 | sed -e 's/^\([^ ]*\).*/0x\1/'`
+       `$(NM) $(TARGET)-syms | sort | tail -n 1 | sed -e 's/^\([^ ]*\).*/0x\1/'`
 
 $(CURDIR)/arch.o: $(OBJS)
        $(LD) $(LDFLAGS) -r -o $@ $(OBJS)
index e93dfdcf96ba31a650de6c3082664c101bcfc0a1..476a86374d9de62c35b62b438af2c2ed44f35cb6 100644 (file)
@@ -244,7 +244,7 @@ int main(int argc, char **argv)
 
     inimage  = argv[1];
     outimage = argv[2];
-    loadbase = strtoul(argv[3], NULL, 16);
+    loadbase = strtoull(argv[3], NULL, 16);
     final_exec_addr = strtoul(argv[4], NULL, 16);
 
     infd = open(inimage, O_RDONLY);